// Package model 定义了服务中使用的数据结构和模型
// 包含API请求响应结构体、配置结构体等核心数据类型
package model

import "time"

// CheckImageRequest 图片检查请求结构体
// 用于接收客户端发送的图片检查请求
type CheckImageRequest struct {
	ImageURL string `json:"image_url" binding:"required" validate:"url"` // 必填，图片URL地址
	UserID   string `json:"user_id,omitempty"`                           // 可选，用户唯一标识
}

// CheckImageResponse 图片检查响应结构体
// 用于返回图片合规性检查结果
type CheckImageResponse struct {
	Compliant        bool                   `json:"合规"`                           // 布尔值，表示图片是否合规
	Description      string                 `json:"说明"`                           // 字符串，违规原因或合规说明
	DetailedResult   map[string]interface{} `json:"详细检查结果"`                       // 对象，包含各项检查的具体结果
	OriginalImageURL string                 `json:"original_image_url,omitempty"` // 原始图片URL，若有修改则返回
	RequestID        string                 `json:"request_id"`                   // 请求ID，用于日志追踪
	Timestamp        time.Time              `json:"timestamp"`                    // 检查时间戳
}

// ErrorResponse 错误响应结构体
// 用于返回统一格式的错误信息
type ErrorResponse struct {
	Error     string    `json:"error"`      // 错误码
	Message   string    `json:"message"`    // 错误描述
	RequestID string    `json:"request_id"` // 请求ID
	Timestamp time.Time `json:"timestamp"`  // 错误发生时间
}

// DoubaoRequest 豆包API请求结构体
// 用于构造发送给豆包API的请求
type DoubaoRequest struct {
	Model    string          `json:"model"`
	Messages []DoubaoMessage `json:"messages"`
}

// DoubaoMessage 豆包消息结构体
type DoubaoMessage struct {
	Role    string                 `json:"role"`
	Content []DoubaoMessageContent `json:"content"`
}

// DoubaoMessageContent 豆包消息内容结构体
type DoubaoMessageContent struct {
	Type     string          `json:"type"`
	Text     string          `json:"text,omitempty"`
	ImageURL *DoubaoImageURL `json:"image_url,omitempty"`
}

// DoubaoImageURL 豆包图片URL结构体
type DoubaoImageURL struct {
	URL string `json:"url"`
}

// DoubaoResponse 豆包API响应结构体
// 用于解析豆包API返回的响应
type DoubaoResponse struct {
	ID      string         `json:"id"`
	Object  string         `json:"object"`
	Created int64          `json:"created"`
	Model   string         `json:"model"`
	Choices []DoubaoChoice `json:"choices"`
	Usage   DoubaoUsage    `json:"usage"`
}

// DoubaoChoice 豆包选择结构体
type DoubaoChoice struct {
	Index        int                   `json:"index"`
	Message      DoubaoResponseMessage `json:"message"`
	FinishReason string                `json:"finish_reason"`
}

// DoubaoResponseMessage 豆包响应消息结构体
type DoubaoResponseMessage struct {
	Role    string `json:"role"`
	Content string `json:"content"`
}

// DoubaoUsage 豆包使用量统计结构体
type DoubaoUsage struct {
	PromptTokens     int `json:"prompt_tokens"`
	CompletionTokens int `json:"completion_tokens"`
	TotalTokens      int `json:"total_tokens"`
}
